[アップデート] Amazon Cognito の高度なセキュリティ機能が「カスタム認証の脅威保護」をサポートしたので使ってみた

[アップデート] Amazon Cognito の高度なセキュリティ機能が「カスタム認証の脅威保護」をサポートしたので使ってみた

Clock Icon2024.08.13

いわさです。

Amazon Cognito の高度なセキュリティ機能で色々なアップデートが出ています。
その中のひとつで高度なセキュリティ機能の脅威保護がカスタム認証フローもサポートしました。

https://aws.amazon.com/about-aws/whats-new/2024/08/amazon-cognito-asf-additional-risks-cover-custom-authentication-flows/

これまで高度なセキュリティ機能はカスタム認証フローや SRP、フェデレーションサインインなど一部の機能では使用することが出来ませんでした。
今回は次のようなカスタム認証フローを設定したユーザープールで高度なセキュリティ機能を有効化し、アダプティブ認証の位置情報による不審なアクティビティを検出してブロックさせてみたいと思います。

https://dev.classmethod.jp/articles/cognito-custom-auth-non-password/

前提として上記ブログのようにカスタム認証フローのユーザープールを作成済みとします。ユーザーを作成し次のようにカスタム認証フローでの認証が出来ている状態です。

% cat hoge.json
{
    "AuthFlow": "CUSTOM_AUTH",
    "AuthParameters": {
        "USERNAME": "hoge0813user1"
    },
    "ClientId": "4cfofdapqgup5u53u4doq7jiau"
}
% aws cognito-idp initiate-auth --cli-input-json file://hoge.json
{
    "ChallengeParameters": {
        "USERNAME": "hoge0813user1"
    },
    "AuthenticationResult": {
        "AccessToken": "...",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "RefreshToken": "...",
        "IdToken": "..."
    }
}

上記の認証リクエストでAuthFlowで指定しているのが認証フローですね。
クライアントアプリケーションごとに対応する認証フローを構成しておく必要があります。

高度なセキュリティ機能を有効化する

まずは高度なセキュリティ機能を有効化します。

24FD7F91-C748-4D4E-9022-7D740EF6CAF6.png

高度なセキュリティ機能を有効化すると、カスタム認証フローの脅威保護がデフォルトで有効化されていることが確認出来ました。
標準認証とカスタム認証で脅威保護設定が別なんですね。
そして、有効化直後は監査専用モードになっていました。

B74A37D3-C440-4DB0-A9B9-3F807EA2FB5D.png

「フル機能モードをセットアップ」のリンクから設定を編集してみましょう。
設定画面自体は標準認証フローと同じ画面ですが、次のようにカスタム認証フローは別で設定するようになっていました。
さらに、カスタム認証フローの場合は「強制適用なし」(脅威保護の無効化)を設定することも可能です。

1C3B74C8-96AB-4AA6-AE25-F78C9AA3BB30.png

今回は次のようにフル機能として、全レベルに対してブロックをさせてみます。

2D9C7EA2-193D-4600-973E-A0F79D02A702.png

フル機能モードを設定した時の高度なセキュリティ機能タブの表示はこんな感じになります。

89210A0B-586B-4717-804D-574A0003B083.png

脅威を検出させてみる

設定が完了したので認証して脅威検出させてみます。
複数の異なる位置から短期間でサインインした際に距離をベースに不審なアクセスか検出されるようなので、日本と米国でそれぞれ認証をさせてみます。

まずは日本(ローカル環境)からの認証です。
認証に成功しました。

% aws cognito-idp initiate-auth --cli-input-json file://hoge.json
{
    "ChallengeParameters": {
        "USERNAME": "hoge0813user2"
    },
    "AuthenticationResult": {
        "AccessToken": "...",
        "ExpiresIn": 3600,
        "TokenType": "Bearer",
        "RefreshToken": "...",
        "IdToken": "..."
    }
}

続いて米国からの認証です。
バージニア北部リージョンの CloudShell から認証させました。

[cloudshell-user@ip-10-140-96-28 ~]$ cat hoge.json
{
    "AuthFlow": "CUSTOM_AUTH",
    "AuthParameters": {
        "USERNAME": "hoge0813user1"
    },
    "ClientId": "4cfofdapqgup5u53u4doq7jiau"
}

[cloudshell-user@ip-10-140-96-28 ~]$ aws cognito-idp initiate-auth --cli-input-json file://hoge.json --region ap-northeast-1

An error occurred (NotAuthorizedException) when calling the InitiateAuth operation: Request not allowed due to security reasons.

おー、こちらはセキュリティ上の理由から許可されていないということで、認証リクエストに失敗しましたね。

さいごに

本日は Amazon Cognito の高度なセキュリティ機能が「カスタム認証の脅威保護」をサポートしたので使ってみました。

カスタム認証フローでも脅威保護が効いてることが確認出来ました。
これまでカスタム認証フローで高度なセキュリティを使えずに有効化を見送っていた方は是非これを機に使ってみてください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.